package com.demo.designmode.singleton;

/**
 * @Author: jxm
 * @Description: 饿汉式-方式2（静态代码块方式） 线程安全
 * @Date: 2023-11-15 9:41
 * @Version: 1.0
 */
public class HungrySingleton2 {

    /**
     * 该方式在成员位置声明Singleton类型的静态变量，而对象的创建是在静态代码块中，
     * 也是对着类的加载而创建。所以和饿汉式的方式1基本上一样，当然该方式也存在内存浪费问题。
     */

    //私有构造方法
    private HungrySingleton2() {}

    //在成员位置创建该类的对象
    private static HungrySingleton2 instance;

    static {
        instance = new HungrySingleton2();
    }

    //对外提供静态方法获取该对象
    public static HungrySingleton2 getInstance() {
        return instance;
    }

    public static void main(String[] args) {
        for (int i =0;i<10;i++){
            new Thread(()->{
                HungrySingleton2 instance = HungrySingleton2.getInstance();
                System.out.println(Thread.currentThread().getName()+"=="+instance.hashCode());
            }).start();
        }
    }
}
